歡迎來到第7課,我們將介紹 遷移學習。這種技術涉及重用一個已在大型通用數據集(如ImageNet)上訓練完成的深度學習模型,並適應於解決新的特定任務(例如我們的FoodVision挑戰)。在標註數據集有限的情況下,它對於高效達成頂尖成果至關重要。
1. 預訓練權重的力量
深度神經網絡以層次方式學習特徵。較低層次學習基本概念(邊緣、角落、紋理),而更深層則將這些特徵組合為複雜概念(眼睛、輪胎、特定物件)。關鍵洞察是,早期學到的基本特徵在大多數視覺領域中都具有 普遍適用 普遍適用性。
遷移學習的組成部分
- 來源任務: 在1400萬張圖像和1000個類別上進行訓練(例如ImageNet)。
- 目標任務: 將權重調整以分類規模小得多的數據集(例如我們特定的FoodVision類別)。
- 被利用的部分: 網絡參數的絕大部分——特徵提取層——直接被重用。
效率提升
遷移學習顯著降低了兩大資源障礙:運算成本(你避免了訓練整個模型數天)以及數據需求(只需數百個訓練樣本即可達到高準確率,而非數千個)。
終端機bash — pytorch-env
> 已準備就緒。點擊「執行」開始運行。
>
張量檢視器即時
執行代碼以檢視活躍的張量
問題 1
使用在ImageNet上預訓練的模型來處理新視覺任務的主要優勢是什麼?
問題 2
在遷移學習流程中,神經網絡的哪一部分通常會被凍結?
問題 3
在PyTorch中替換分類器頭時,必須首先從凍結的基礎層中確定哪個參數?
挑戰:調整分類器頭
為FoodVision設計一個新的分類器。
您載入了一個在ImageNet上預訓練的ResNet模型。其最後一層特徵層輸出一個大小為512的向量。您的「FoodVision」專案有7種不同的食物類別。
步驟 1
新可訓練線性層所需的輸入特徵尺寸是多少?
解答:
輸入特徵尺寸必須與凍結基礎層的輸出匹配。
尺寸:512。
輸入特徵尺寸必須與凍結基礎層的輸出匹配。
尺寸:512。
步驟 2
建立此新分類層的PyTorch代碼片段是什麼(假設輸出命名為`new_layer`)?
解答:
輸出大小512作為輸入,類別數7作為輸出。
代碼:
輸出大小512作為輸入,類別數7作為輸出。
代碼:
new_layer = torch.nn.Linear(512, 7)步驟 3
新線性層所需的輸出特徵尺寸是多少?
解答:
輸出特徵尺寸必須與目標類別數量匹配。
尺寸:7。
輸出特徵尺寸必須與目標類別數量匹配。
尺寸:7。